/* 学生管理系统 */

#include "stu.h"

int CurrentStudent = 0;
int CurrentAdmin = 0;

int main()
{
    int input;

    //创建头节点并初始化
    NodeS HeadS;
    NodeS* pHeadS = &HeadS;
    init_listS(&pHeadS);

    NodeA HeadA;
    NodeA* pHeadA = &HeadA;
    init_listA(&pHeadA);

    while (true)
    {
        WelcomeA();//欢迎
        scanf("%d", &input);

        switch (input)
        {
            case 1:
            {
                bool flag = sign_in(pHeadA);
                if (flag)
                {
                    goto next;
                }
                break;
            }

            case 2:
                Register(pHeadA);
                break;
            case 3:
                forget_password(pHeadA);
                break;
            case 4:
                printf("退出\n");
                return 0;
            default:
                printf("输入错误，请重新输入\n");
        }
    }

next:
    while (true)
    {
        WelcomeS();//欢迎
        scanf("%d", &input);

        switch (input)
        {
            case 1:
            {
                int choice;
                printf("请输入要插入的位置(0 表示插入末尾，1 表示插入开头，其余的表示插入到第 x 个节点):>");
                scanf("%d", &choice);

                insert_student(pHeadS, *create_student(), choice);
                break;
            }
            case 2://打印学生信息
            {
                output_all_students(pHeadS);
                break;
            }
            case 3:
            {
                int count = save_to_file(pHeadS);
                printf("已将 %d 个学生的信息保存\n", count);
                break;
            }
            case 4:
            {
                destroy_list(&pHeadS);//销毁链表
                init_listS(&pHeadS);//重新读取
                break;
            }
            case 5:
            {
                printf("请输入要查询的学生 id:>");
                char id[MAX_ID_LEN];
                scanf("%s", id);
                search_student(pHeadS, id);
                break;
            }
            case 6:
            {
                printf("请输入要修改的学生 id:>");
                char id[MAX_ID_LEN];
                scanf("%s", id);
                change_student(pHeadS, id, *create_student());
                break;
            }
            case 7:
            {
                printf("请输入要删除的学生 id:>");
                char id[MAX_ID_LEN];
                scanf("%s", id);
                delete_student(pHeadS, id);
                break;
            }
            case 8:
            {
                bubble_sort(pHeadS);
                output_all_students(pHeadS);
                break;
            }
            case 9:
            {
                destroy_list_and_file(&pHeadS);
                break;
            }
            default:
                printf("输入错误，请重新输入\n");
                break;
            case 0:
                printf("退出系统\n");
                destroy_list(&pHeadS);
                return 0;
        }
    }
}

